<?php
namespace zake\foundation\able;


interface MapAble
{
    /**
     * 列表
     *
     * @return array
     *
     * @author liu.bin 2020-03-24 22:19
     */
    public function all();


    /**
     * 获取元素
     * @param $key
     * @param null $default
     * @return mixed
     *
     * @author liu.bin 2020-03-31 00:18
     */
    public function get($key,$default=null);


    /**
     * 添加元素映射
     * @param mixed $key
     * @param mixed $node
     *
     * @return bool
     * @author liu.bin 2020-03-24 22:08
     */
    public function put($key,$node);


    /**
     * 是否包含key
     *
     * @param mixed $key
     * @return bool
     * @author liu.bin 2020-03-24 22:08
     */
    public function containerKey($key);


    /**
     * 是否包含value
     * @param mixed $node
     *
     * @return bool
     * @author liu.bin 2020-03-31 00:19
     */
    public function containerValue($node);


    /**
     * 移除
     * @param mixed $key
     * @return bool
     * @author liu.bin 2020-03-24 22:09
     */
    public function remove($key);


    /**
     * 映射数量
     * @return int
     *
     * @author liu.bin 2020-03-30 19:06
     */
    public function size();


    /**
     * 是否为空
     * @return bool
     *
     * @author liu.bin 2020-03-30 19:06
     */
    public function isEmpty();


    /**
     * 清空map数据
     * @return bool
     *
     * @author liu.bin 2020-03-30 19:09
     */
    public function clear();
}
